package com.cskaoyan.login;

import com.cskaoyan.utils.JDBCUtils;

import java.sql.*;

/**
 * 创建日期: 2022/04/21 14:55
 *
 * @author ciggar
 */
public class LoginDemo {

    public static void main(String[] args) throws SQLException {

//        login2("风华哥","basketball");
//        login2("风华哥","ball");

        login2("afjsfbwjkf","xxx' or '1=1");

    }

    // select * from cskaoyan where username = '风华哥' and password = 'xxx' or '1=1';
    // username = 风华哥
    // password = xxx' or '1=1


    // 登录方法
    public static Boolean login(String username,String password) throws SQLException {


        Connection connection = JDBCUtils.getConnection();

        Statement statement = connection.createStatement();

        // 1. 通过用户名和密码查询数据库
        String sql = "select * from cskaoyan where username = '" + username + "' and password = '" + password + "'";

        System.out.println("sql:" + sql);

        ResultSet resultSet = statement.executeQuery(sql);

        // 2. 假如查到了数据，说明用户名和密码正确，登录成功
        if (resultSet.next()) {

            System.out.println("登录成功!!!");
            return true;
        }

        // 3. 假如没有查到数据，说明用户名和密码有误，登录失败
        else {
            System.out.println("登录失败！！！");
            return false;
        }

    }

    public static Boolean login2(String username,String password) throws SQLException {

        Connection connection = JDBCUtils.getConnection();

        // 获取PrepareStatement
        // 还没有赋值的参数使用 ？ 来占位
        // 这一句代码会把 SQL交给MySQL服务器来编译（预编译）
        // 执行SQL语句 此处，Java程序需要和MySQL服务器进行通信，目的是为了把SQL 语句交给MySQL服务器进行编译
        PreparedStatement preparedStatement = connection.prepareStatement("select * from cskaoyan where username = ? and password = ?");

        // 对于上面的问号来赋值

        // 对第一个问号赋值
        preparedStatement.setString(1,username);

        // 对第二个问号赋值
        preparedStatement.setString(2,password);

//        preparedStatement.setInt();


        // 执行SQL语句 此处，Java程序需要和MySQL服务器进行通信，目的是为了把输入的参数传递给MySQL服务器.
        ResultSet resultSet = preparedStatement.executeQuery();

        if (resultSet.next()) {
            System.out.println("登录成功!!!");
            return true;
        }else {
            System.out.println("登录失败！！！");
            return false;
        }

    }

}
